<?php

include_once("../controller/telefone_controller_class.php");
include_once("../controller/email_controller_class.php");
include_once("../controller/especialidade_controller_class.php");
include_once("../controller/logradouro_controller_class.php");
include_once("../controller/nivel_controller_class.php");
include_once("../controller/sala_controller_class.php");


class FuncionarioDAO {

    private $insert = "INSERT INTO funcionario(sal_id, log_id, niv_id, fun_nome, fun_nasc, fun_apelido, fun_num, fun_foto,
            fun_usu, fun_senha, fun_ativo) values(?,?,?,?,?,?,?,?,?,?,?);";
    private $insert_tel = "INSERT INTO contato(fun_id, con_telefone, con_tipo) VALUES (?,?,?);";
    private $insert_email = "INSERT INTO email (fun_id, ema_nome, ema_tipo) VALUES (?,?,?);";
    private $insert_espec = "INSERT INTO funcionario_especialidade(fun_id, esp_id) VALUES (?,?);";
    
    private $update = "UPDATE funcionario SET sal_id = ?, log_id = ?, fun_nome = ?, fun_nasc = ?, 
        fun_apelido = ?, fun_num = ?, fun_foto = ?, fun_ativo = ? WHERE fun_id = ?;";
    
    private $delete = "DELETE FROM funcionario WHERE fun_id = ?;";
    private $delete_telefone = "DELETE FROM contato WHERE fun_id = ?;";
    private $delete_email = "DELETE FROM email WHERE fun_id = ?;";
    private $delete_especialidade = "DELETE FROM funcionario_especialidade WHERE fun_id = ?;";
    
    private $select = "SELECT * FROM funcionario;";
    private $select_func = "SELECT * FROM funcionario WHERE fun_id = ?;";
    private $select_func_by_sala = "SELECT * FROM funcionario WHERE sal_id = ?;";
    private $select_by_nome = "SELECT * FROM funcionario WHERE fun_nome = ?;";
    private $select_by_nome_edit = "SELECT * FROM funcionario WHERE fun_nome = ? AND fun_id != ?;";
    private $select_para_equipe = "SELECT funcionario.fun_id, sal_id, log_id, niv_id, fun_nome, fun_nasc, fun_apelido, fun_num, fun_foto,
                                    fun_usu, fun_senha, fun_ativo
                                    FROM funcionario, funcionario_especialidade, especialidade WHERE
                                    funcionario.FUN_ID = funcionario_especialidade.FUN_ID AND
                                    funcionario_especialidade.ESP_ID = especialidade.ESP_ID AND
                                    especialidade.ESP_ID = ? AND
                                    FUNCIONARIO.FUN_ID NOT IN
                                    (SELECT DISTINCT funcionario.FUN_ID
                                    FROM funcionario, equipe WHERE funcionario.FUN_ID = equipe.FUN_ID AND EQUIPE_ATIVO != 0);";
    private $select_all_para_equipe = "SELECT DISTINCT funcionario.fun_id, sal_id, log_id, funcionario.NIV_ID, fun_nome, fun_nasc, fun_apelido, fun_num, fun_foto,
                                    fun_usu, fun_senha, fun_ativo
                                    FROM funcionario, funcionario_especialidade, especialidade WHERE
                                    funcionario.FUN_ID = funcionario_especialidade.FUN_ID AND
                                    funcionario_especialidade.ESP_ID = especialidade.ESP_ID AND
				    (7 = funcionario.niv_id OR 6 = funcionario.niv_id) AND
                                    FUNCIONARIO.FUN_ID NOT IN
				    (SELECT DISTINCT funcionario.FUN_ID
				     FROM funcionario, equipe, ocorrencia WHERE funcionario.FUN_ID = equipe.FUN_ID AND equipe.OCO_ID = ocorrencia.OCO_ID 
				     AND EQUIPE_ATIVO != 0 AND ocorrencia.URG_ID <= ?) AND FUNCIONARIO.FUN_ID NOT IN
				     (SELECT DISTINCT funcionario.FUN_ID
				     FROM funcionario, equipe, ocorrencia WHERE funcionario.FUN_ID = equipe.FUN_ID AND equipe.OCO_ID = ocorrencia.OCO_ID 
				     AND EQUIPE_ATIVO = 2);";
    
    private $session = "SELECT * FROM funcionario WHERE fun_usu = ? AND fun_senha = ?;";
    
    private $select_by_usuario = "SELECT * FROM funcionario WHERE fun_usu = ?";

    function insert($objFuncionario) {
        //conectando ao banco
        $objConn = new Conexao();
        $conn = $objConn->conecta();

        $conn->begin_transaction();
        $erro = array();
        $id;
//        var_dump($conn);
        //criando o preparedStatment
        //var_dump($objFuncionario);
        if ($stm = $conn->prepare($this->insert)) {

            $stm->bind_param("iiisssissss", $objFuncionario->getSala(), $objFuncionario->getLogradouro(), 
                    $objFuncionario->getNivel(), $objFuncionario->getNome(), $objFuncionario->getNascimento(), 
                    $objFuncionario->getApelido(), $objFuncionario->getNumero(), $objFuncionario->getFoto(), 
                    $objFuncionario->getUsuario(), $objFuncionario->getSenha(), $objFuncionario->getAtivo());

            if (!$stm->execute()) {
                $erro[] = "Erro Funcionario";
                echo mysqli_error($conn);
            } else {

                $id = $stm->insert_id;
            }
        } else {
            echo mysqli_error($conn);
            $erro[] = "STMT Funcionario";
        }

        if ($stm = $conn->prepare($this->insert_tel)) {
            $i = 0;
            foreach ($objFuncionario->getTelefone() as $tel) {
                $stm->bind_param("iss", $id, $tel->getTelefone(), $tel->getTipo());
                $i++;
                if (!$stm->execute()) {
                    $erro[] = "Erro Telefone";
                    echo mysqli_error($conn);
                    break;
                }
            }
        } else {
            $erro[] = "STMT Telefone";
            echo mysqli_error($conn);
        }

        if ($stm = $conn->prepare($this->insert_email)) {
            $i = 0;
            foreach ($objFuncionario->getEmail() as $ema) {
                $stm->bind_param("iss", $id, $ema->getNome(), $ema->getTipo());
                $i++;
                if (!$stm->execute()) {
                    $erro[] = "Erro Email";
                    echo mysqli_error($conn);
                    break;
                }
            }
        } else {
            $erro[] = "STMT Email";
            echo mysqli_error($conn);
        }

        if ($stm = $conn->prepare($this->insert_espec)) {
            $i = 0;
            if(!$objFuncionario->getEspecialidade() == 'NULL'){
                foreach ($objFuncionario->getEspecialidade() as $esp) {
                    $stm->bind_param("ii", $id, $esp->getId());
                    $i++;
                    if (!$stm->execute()) {
                        $erro[] = "Erro Especialidade";
                        echo mysqli_error($conn);
                        break;
                    }
                }
            }
        } else {
            $erro[] = "STMT Especialdade";
            echo mysqli_error($conn);
        }

        for ($i = 0; $i < count($erro); $i++) {
            echo $erro[$i] . "<br>";
        }

        if (count($erro) == 0) {
            $conn->commit();
            $conn->close();
            return true;
        } else {
            $conn->rollback();
            $conn->close();
            return false;
        }
    }

    /**
     * 
     * @param type $objFuncionario deve conter array telefone, array de email, array de especialidade 
     *
     * @return boolean retorna true se cadastrado com sucesso
     */
    function update($objFuncionario) {
//        echo "<pre>";
//        var_dump($objFuncionario);
        $objConn = new Conexao();
        $conn = $objConn->conecta();

        $conn->begin_transaction();
        $erro = array();
        //drop telefones
        if ($stm = $conn->prepare($this->delete_telefone)) {

            $stm->bind_param('i', $objFuncionario->getId());

            if (!$stm->execute()) {
                $erro[] = "Erro ao excluir Telefones";
                echo mysqli_error($conn);
            }
        } else {
            $erro[] = "Erro ao preparar exclusão de telefones";
            echo mysqli_error($conn);
        }

        //drop emails
        if ($stm = $conn->prepare($this->delete_email)) {

            $stm->bind_param('i', $objFuncionario->getId());

            if (!$stm->execute()) {
                $erro[] = "Erro ao excluir E-mails";
                echo mysqli_error($conn);
            }
        } else {
            $erro[] = "Erro ao preparar exclusão de E-mails";
            echo mysqli_error($sconn);
        }

        //drop especialidades
        if ($stm = $conn->prepare($this->delete_especialidade)) {

            $stm->bind_param('i', $objFuncionario->getId());

            if (!$stm->execute()) {
                $erro[] = "Erro ao excluir Especialidades";
                echo mysqli_error($conn);
            }
        } else {
            $erro[] = "Erro ao preparar exclusão de Especialidades";
            echo mysqli_error($sconn);
        }

        //cadastro de telefones
        if ($stm = $conn->prepare($this->insert_tel)) {
            $i = 0;
            foreach ($objFuncionario->getTelefone() as $tel) {
                $stm->bind_param("iss", $objFuncionario->getId(), $tel->getTelefone(), $tel->getTipo());
                $i++;
                if (!$stm->execute()) {
                    $erro[] = "Erro Telefone";
                    echo mysqli_error($conn);
                    break;
                }
            }
        } else {
            $erro[] = "STMT Telefone";
            echo mysqli_error($conn);
        }

        //cadastro de emails
        if ($stm = $conn->prepare($this->insert_email)) {
            $i = 0;
            foreach ($objFuncionario->getEmail() as $ema) {
                $stm->bind_param("iss", $objFuncionario->getId(), $ema->getNome(), $ema->getTipo());
                $i++;
                if (!$stm->execute()) {
                    $erro[] = "Erro Email";
                    echo mysqli_error($conn);
                    break;
                }
            }
        } else {
            $erro[] = "STMT Email";
            echo mysqli_error($conn);
        }

        //cadastro de especialidades
        if ($stm = $conn->prepare($this->insert_espec)) {
            $i = 0;
            foreach ($objFuncionario->getEspecialidade() as $esp) {
                $stm->bind_param("ii", $objFuncionario->getId(), $esp->getId());
                $i++;
                if (!$stm->execute()) {
                    $erro[] = "Erro Especialidade";
                    echo mysqli_error($conn);
                    break;
                }
            }
        } else {
            $erro[] = "STMT Especialdade";
            echo mysqli_error($conn);
        }

        if ($stm = $conn->prepare($this->update)) {

            $stm->bind_param("iisssissi", $objFuncionario->getSala(), $objFuncionario->getLogradouro(), 
                    $objFuncionario->getNome(), $objFuncionario->getNascimento(), 
                    $objFuncionario->getApelido(), $objFuncionario->getNumero(), $objFuncionario->getFoto(), 
                    $objFuncionario->getAtivo(), $objFuncionario->getId());

            if (!$stm->execute()) {
                $erro[] = "Erro Funcionario";
                echo mysqli_error($conn);
            } else {

                $id = $stm->insert_id;
            }
        } else {
            echo mysqli_error($conn);
            $erro[] = "STMT Funcionario";
        }

        for ($i = 0; $i < count($erro); $i++) {
            echo $erro[$i] . "<br>";
        }

        if (count($erro) == 0) {
            $conn->commit();
            $conn->close();
            return true;
        } else {
            $conn->rollback();
            $conn->close();
            return false;
        }
    }

    function delete($id) {
        
        $objConn = new Conexao();
        $conn = $objConn->conecta();

        $conn->begin_transaction();
        $erro = array();
        //delete telefones
        if ($stm = $conn->prepare($this->delete_telefone)) {

            $stm->bind_param('i', $id);

            if (!$stm->execute()) {
                $erro[] = "Erro ao excluir Telefones";
                echo mysqli_error($conn);
            }
        } else {
            $erro[] = "Erro ao preparar exclusão de telefones";
            echo mysqli_error($conn);
        }

        //delete emails
        if ($stm = $conn->prepare($this->delete_email)) {

            $stm->bind_param('i', $id);

            if (!$stm->execute()) {
                $erro[] = "Erro ao excluir E-mails";
                echo mysqli_error($conn);
            }
        } else {
            $erro[] = "Erro ao preparar exclusão de E-mails";
            echo mysqli_error($sconn);
        }

        //delete especialidades
        if ($stm = $conn->prepare($this->delete_especialidade)) {

            $stm->bind_param('i', $id);

            if (!$stm->execute()) {
                $erro[] = "Erro ao excluir Especialidades";
                echo mysqli_error($conn);
            }
        } else {
            $erro[] = "Erro ao preparar exclusão de Especialidades";
            echo mysqli_error($sconn);
        }

        //delete funcionario
        if ($stm = $conn->prepare($this->delete)) {

            $stm->bind_param("i", $id);
            
            if (!$stm->execute()) {
                $erro[] = "Erro ao excluir Funcionario";
                echo mysqli_error($conn);
            }
        } else {
            $erro[] = "Erro ao preparar exclusão de Funcionario";
            echo mysqli_error($sconn);
        }

        for ($i = 0; $i < count($erro); $i++) {
            echo $erro[$i] . "<br>";
        }

        if (count($erro) == 0) {
            $conn->commit();
            $conn->close();
            return true;
        } else {
            $conn->rollback();
            $conn->close();
            return false;
        }
    }

    function findAllFuncionario() {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $funcM = new FuncionarioModel();
        $lista = array();
        if ($stm = $conn->prepare($this->select)) {

            $stm->execute();
            
            //atribui o resultado encontrado as variaveis
            $stm->bind_result($id, $sala, $logradouro, $nivel, $nome, $nascimento, $apelido, $numero, $foto, 
                    $usuario, $senha, $ativo);

            $objTel = new TelefoneController();
            $objEmail = new EmailController();
            $objEspec = new EspecialidadeController();
            //para cada resultado encontrado
            $i = 0;
            while ($stm->fetch()) {

                $telefone = $objTel->selecionarPorFuncionario($id);
                $email = $objEmail->selecionarPorFuncionario($id);
                $especialidade = $objEspec->selecionarPorFuncionario($id);

                $objLogradouro = new LogradouroController();
                $logradouro = $objLogradouro->selecionarCepPeloId($logradouro);

                $nascimento = implode("/", array_reverse(explode("-", $nascimento)));
                
                $funcM = new FuncionarioModel();
                
                $funcM->setId($id);
                $funcM->setSala($sala);
                $funcM->setLogradouro($logradouro);
                $funcM->setNivel($nivel);
                $funcM->setNome($nome);
                $funcM->setNascimento($nascimento);
                $funcM->setApelido($apelido);
                $funcM->setNumero($numero);
                $funcM->setFoto($foto);
                $funcM->setUsuario($usuario);
                $funcM->setSenha($senha);
                $funcM->setAtivo($ativo);
                $funcM->setEmail($email);
                $funcM->setTelefone($telefone);
                $funcM->setEspecialidade($especialidade);
                
                $lista[$i++] = $funcM;
            }
        }

        $conn->close();
        return $lista;
    }
    
    function selectForTeam($especialidade) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $funcM = new FuncionarioModel();
        $lista = array();
        if ($stm = $conn->prepare($this->select_para_equipe)) {
            
            $stm->bind_param('i', $especialidade);
            
            $stm->execute();
            
            //atribui o resultado encontrado as variaveis
            $stm->bind_result($id, $sala, $logradouro, $nivel, $nome, $nascimento, $apelido, $numero, $foto, 
                    $usuario, $senha, $ativo);

            $objTel = new TelefoneController();
            $objEmail = new EmailController();
            $objEspec = new EspecialidadeController();
            //para cada resultado encontrado
            $i = 0;
            while ($stm->fetch()) {

                $telefone = $objTel->selecionarPorFuncionario($id);
                $email = $objEmail->selecionarPorFuncionario($id);
                $especialidade = $objEspec->selecionarPorFuncionario($id);

                $objLogradouro = new LogradouroController();
                $logradouro = $objLogradouro->selecionarCepPeloId($logradouro);

                $nascimento = implode("/", array_reverse(explode("-", $nascimento)));
                
                $funcM = new FuncionarioModel();
                
                $funcM->setId($id);
                $funcM->setSala($sala);
                $funcM->setLogradouro($logradouro);
                $funcM->setNivel($nivel);
                $funcM->setNome($nome);
                $funcM->setNascimento($nascimento);
                $funcM->setApelido($apelido);
                $funcM->setNumero($numero);
                $funcM->setFoto($foto);
                $funcM->setUsuario($usuario);
                $funcM->setSenha($senha);
                $funcM->setAtivo($ativo);
                $funcM->setEmail($email);
                $funcM->setTelefone($telefone);
                $funcM->setEspecialidade($especialidade);
                
                $lista[$i++] = $funcM;
            }
        }

        $conn->close();
        return $lista;
    }
    
    function selectAllForTeam($urgencia) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $funcM = new FuncionarioModel();
        $lista = array();
        if ($stm = $conn->prepare($this->select_all_para_equipe)) {
            
            $stm->bind_param('i', $urgencia);
            
            $stm->execute();
            
            //atribui o resultado encontrado as variaveis
            $stm->bind_result($id, $sala, $logradouro, $nivel, $nome, $nascimento, $apelido, $numero, $foto, 
                    $usuario, $senha, $ativo);

            $objTel = new TelefoneController();
            $objEmail = new EmailController();
            $objEspec = new EspecialidadeController();
            //para cada resultado encontrado
            $i = 0;
            while ($stm->fetch()) {

                $telefone = $objTel->selecionarPorFuncionario($id);
                $email = $objEmail->selecionarPorFuncionario($id);
                $especialidade = $objEspec->selecionarPorFuncionario($id);

                $objLogradouro = new LogradouroController();
                $logradouro = $objLogradouro->selecionarCepPeloId($logradouro);

                $nascimento = implode("/", array_reverse(explode("-", $nascimento)));
                
                $funcM = new FuncionarioModel();
                
                $funcM->setId($id);
                $funcM->setSala($sala);
                $funcM->setLogradouro($logradouro);
                $funcM->setNivel($nivel);
                $funcM->setNome($nome);
                $funcM->setNascimento($nascimento);
                $funcM->setApelido($apelido);
                $funcM->setNumero($numero);
                $funcM->setFoto($foto);
                $funcM->setUsuario($usuario);
                $funcM->setSenha($senha);
                $funcM->setAtivo($ativo);
                $funcM->setEmail($email);
                $funcM->setTelefone($telefone);
                $funcM->setEspecialidade($especialidade);
                
                
                $lista[$i++] = $funcM;
            }
        }

        $conn->close();
        return $lista;
    }
    

    function findFuncionarioById($funcionario) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $funcM = new FuncionarioModel();
        
        if ($stm = $conn->prepare($this->select_func)) {

            $stm->bind_param("i", $funcionario);

            $stm->execute();
            
            //atribui o resultado encontrado as variaveis
            $stm->bind_result($id, $sala, $logradouro, $nivel, $nome, $nascimento, 
                    $apelido, $numero, $foto, $usuario, $senha, $ativo);

            $objTel = new TelefoneController();
            $objEmail = new EmailController();
            $objEspec = new EspecialidadeController();
            $objNivel = new NivelController();
            //para cada resultado encontrado
            
            while ($stm->fetch()) {
//                echo "Id: ".$id." Descrição: ".$descricao."<br>";


                $telefone = $objTel->selecionarPorFuncionario($id);
                $email = $objEmail->selecionarPorFuncionario($id);
                $especialidade = $objEspec->selecionarPorFuncionario($id);

                $nivel = $objNivel->selecionarPorId($nivel);
                
                $objLogradouro = new LogradouroController();
                $logradouro = $objLogradouro->selecionarCepPeloId($logradouro);

                $nascimento = implode("/", array_reverse(explode("-", $nascimento)));
                
                $funcM = new FuncionarioModel();
                
                $funcM->setId($id);
                $funcM->setSala($sala);
                $funcM->setLogradouro($logradouro);
                $funcM->setNivel($nivel);
                $funcM->setNome($nome);
                $funcM->setNascimento($nascimento);
                $funcM->setApelido($apelido);
                $funcM->setNumero($numero);
                $funcM->setFoto($foto);
                $funcM->setUsuario($usuario);
                $funcM->setSenha($senha);
                $funcM->setAtivo($ativo);
                $funcM->setEmail($email);
                $funcM->setTelefone($telefone);
                $funcM->setEspecialidade($especialidade);
                
                
            }
        }

        $conn->close();
        return $funcM;
    }
    
    function findFuncionariosBySala($sala) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $funcM = new FuncionarioModel();
        
        if ($stm = $conn->prepare($this->select_func_by_sala)) {

            $stm->bind_param("i", $sala);

            $stm->execute();
            
            //atribui o resultado encontrado as variaveis
            $stm->bind_result($id, $sala, $logradouro, $nivel, $nome, $nascimento, 
                    $apelido, $numero, $foto, $usuario, $senha, $ativo);

            $objTel = new TelefoneController();
            $objEmail = new EmailController();
            $objEspec = new EspecialidadeController();
            $objNivel = new NivelController();
            //para cada resultado encontrado
            
            while ($stm->fetch()) {
//                echo "Id: ".$id." Descrição: ".$descricao."<br>";
                $objSala = new SalaController();
                $sala = $objSala->selecionarSalaPorId($sala);

                $telefone = $objTel->selecionarPorFuncionario($id);
                $email = $objEmail->selecionarPorFuncionario($id);
                $especialidade = $objEspec->selecionarPorFuncionario($id);

                $nivel = $objNivel->selecionarPorId($nivel);
                
                $objLogradouro = new LogradouroController();
                $logradouro = $objLogradouro->selecionarCepPeloId($logradouro);

                $nascimento = implode("/", array_reverse(explode("-", $nascimento)));
                
                $funcM = new FuncionarioModel();
                
                $funcM->setId($id);
                $funcM->setSala($sala);
                $funcM->setLogradouro($logradouro);
                $funcM->setNivel($nivel);
                $funcM->setNome($nome);
                $funcM->setNascimento($nascimento);
                $funcM->setApelido($apelido);
                $funcM->setNumero($numero);
                $funcM->setFoto($foto);
                $funcM->setUsuario($usuario);
                $funcM->setSenha($senha);
                $funcM->setAtivo($ativo);
                $funcM->setEmail($email);
                $funcM->setTelefone($telefone);
                $funcM->setEspecialidade($especialidade);
                
                
            }
        }

        $conn->close();
        return $funcM;
    }

    function existe($nome, $id = "") {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        //$select_by_nome_edit
        if(!empty($id)){
            if ($stm = $conn->prepare($this->select_by_nome_edit)) {
                
                $stm->bind_param("si", $nome,$id);
                
                $stm->execute();

                while($stm->fetch()){
                    $conn->close();
                    return true;
                }
            }
        }else{
            if ($stm = $conn->prepare($this->select_by_nome)) {
                
                $stm->bind_param("s", $nome);
                
                $stm->execute();

                while($stm->fetch()){
                    $conn->close();
                    return true;
                }
            }
        }
        
        $conn->close();
        return false;
    }
    
    function existeUsuario($usuario) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        //$select_by_nome_edit
        
            if ($stm = $conn->prepare($this->select_by_usuario)) {
                
                $stm->bind_param("s", $usuario);
                
                $stm->execute();

                while($stm->fetch()){
                    $conn->close();
                    return true;
                }
            }
        
        $conn->close();
        return false;
    }
    
    function sessionStart($usuario, $senha){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $funcM = new FuncionarioModel();
        if ($stm = $conn->prepare($this->session)) {

            $stm->bind_param("ss", $usuario,$senha);

            $stm->execute();

            $stm->bind_result($id, $sala, $logradouro, $nivel, $nome, $nascimento, 
                $apelido, $numero, $foto, $usuario, $senha, $ativo);

            $objTel = new TelefoneController();
            $objEmail = new EmailController();
            $objEspec = new EspecialidadeController();
            $objNivel = new NivelController();
            
            $objSala = new SalaController();
            
            
            while($stm->fetch()){
                $telefone = $objTel->selecionarPorFuncionario($id);
                $email = $objEmail->selecionarPorFuncionario($id);
                $especialidade = $objEspec->selecionarPorFuncionario($id);
                
                $nivel = $objNivel->selecionarPorId($nivel);

                $objLogradouro = new LogradouroController();
                $logradouro = $objLogradouro->selecionarCepPeloId($logradouro);

                $nascimento = implode("/", array_reverse(explode("-", $nascimento)));
                
                $funcM = new FuncionarioModel();

                $funcM->setId($id);
                $funcM->setSala($objSala->selecionarSalaPorId($sala));
                $funcM->setLogradouro($logradouro);
                $funcM->setNivel($nivel);
                $funcM->setNome($nome);
                $funcM->setNascimento($nascimento);
                $funcM->setApelido($apelido);
                $funcM->setNumero($numero);
                $funcM->setFoto($foto);
                $funcM->setUsuario($usuario);
                $funcM->setSenha($senha);
                $funcM->setAtivo($ativo);
                $funcM->setEmail($email);
                $funcM->setTelefone($telefone);
                $funcM->setEspecialidade($especialidade);
            }
            return $funcM;
        }else{
            echo mysqli_error($stm);
        }
        
        
        $conn->close();
        return false;
    }
    
}

//
//$teste = new FuncionarioDAO();
//
//$func = new FuncionarioModel();
//$func->setSala(1);
//$func->setLogradouro(498259);
//$func->setLogin(2);
//$func->setNome("Alma Negra");
//$func->setNascimento('1988-06-22');
//$func->setApelido("Alma");
//$func->setNumero(300);
//$func->setFoto("foto");
//
//$tels;
//$tel = new TelefoneModel();
//$tel->setTelefone("Telefone 1");
//$tel->setTipo("Fixo");
//
//$tels[0] = $tel;
//
//$tel = new TelefoneModel();
//
//$tel->setTelefone("Telefone 2");
//$tel->setTipo("Celular");
//
//$tels[1] = $tel;
//
//$func->setTelefone($tels);
//
//$emails;
//$ema = new EmailModel();
//$ema->setNome("welisson@email.com");
//$ema->setTipo("Pessoal");
//
//$emails[0] = $ema;
//
//$func->setEmail($emails);
//
//if($teste->insert($func)){
//    echo "<script>alert('Cadastrado com sucesso!')</script>";
//}else{
//    echo "<script>alert('Erro!')</script>";
//}
